home *** CD-ROM | disk | FTP | other *** search
-
- *-------------- Convert ProTracker module to ProRunner v2.0 Packed
-
- lea pr_data(pc),a0
- move.l #pr_dataend-pr_data,d0
- bsr.s pr_Pack
- rts
-
- pr_Pack: lea pr_Module(pc),a1
- move.l a0,(a1)
- cmp.l #'M.K.',$438(a0)
- bne.w not_pr
-
- move.l d0,pr_OldLength-pr_Module(a1)
- moveq #0,d0
- move.b $3B6(a0),d0
- move.w d0,pr_Wd3-pr_Module(a1)
-
- lea $3B8(a0),a1
- moveq #$7F,d0
- moveq #0,d1
- cn1a: move.b (a1)+,d2
- cmp.b d1,d2
- bls.s cn1b
- move.b d2,d1
- cn1b: dbra d0,cn1a
-
- move.l a0,-(sp)
- lea pr_Wd2(pc),a0
- move.w d1,(a0) ;!!!!!!!!!!!!!!!!!!
- move.l (sp)+,a0
-
- lea $43C(a0),a1
- lea (a0),a2
- add.l pr_OldLength(pc),a2
- moveq #0,d0
- move.w pr_Wd2(pc),d0
- addq.w #1,d0
- lsl.l #8,d0
- lsl.l #2,d0
- add.l d0,a1
- sub.l a1,a2
-
- move.l a0,-(sp)
- lea pr_pr_r3(pc),a0
- move.l a2,(a0) ;!!!!!!!!!!!!!!!!!!
- move.l (sp)+,a0
-
- lea pr_dabuf(pc),a2
- moveq #$7F,d0
- subq.w #1,d0
- moveq #0,d7
- moveq #1,d6
- cn3b: lea $3B8(a0),a1
- move.w pr_Wd3(pc),d1
- subq.w #1,d1
- moveq #0,d5
- cn3c: cmp.b (a1)+,d7
- bne.s cn3d
- move.b d6,0(a2,d7.w)
- addq.w #1,d5
- cn3d: dbra d1,cn3c
- tst.w d5
- beq.s cn3e
- addq.w #1,d6
- cn3e: addq.w #1,d7
- dbra d0,cn3b
-
- lea pr_dabuf(pc),a1
- moveq #0,d1
- moveq #$7F,d0
- cn4b: move.b (a1)+,d2
- cmp.b d1,d2
- bls.s cn4c
- move.b d2,d1
- cn4c: dbra d0,cn4b
- subq.w #1,d1
-
- move.l a0,-(sp)
- lea pr_Wd1(pc),a0
- move.w d1,(a0) ;!!!!!!!!
- move.l (sp)+,a0
-
- lea $3B8(a0),a1
- lea pr_dabuf(pc),a2
- lea pr_dabuf3(pc),a3
- move.w pr_Wd3(pc),d0
- subq.w #1,d0
- moveq #0,d1
- cn5b: move.b (a1)+,d1
- move.b 0(a2,d1.w),d1
- subq.w #1,d1
- move.b d1,(a3)+
- dbra d0,cn5b
-
- cn6: lea $3B8(a0),a1
- move.b $3B8(a0),$438(a0)
- lea pr_Buf1(pc),a2
- move.w pr_Wd3(pc),d0
- subq.w #1,d0
- moveq #0,d1
- cn6b: moveq #0,d2
- move.b (a1)+,d2
- lsl.l #8,d2
- lsl.l #2,d2
- lea $43E(a0),a3
- add.l d2,a3
- move.l d1,d2
- lsl.l #4,d2
- add.l d2,a3
- move.w d1,d2
- neg.w d2
- add.w #$40,d2
- lsl.w #2,d2
- subq.w #1,d2
- cn6c: moveq #15,d3
- and.b (a3),d3
- cmp.b #13,d3
- beq.s cn6f
- cn6d: addq.l #4,a3
- dbra d2,cn6c
- bra.s cn6e
- cn6f: moveq #0,d3
- move.b 1(a3),d3
- beq.s cn6d
- moveq #15,d4
- and.b d3,d4
- lsr.b #4,d3
- mulu #10,d3
- add.w d4,d3
- move.b d3,1(a3)
- move.w d3,(a2)
- move.w d3,d1
- cn6e: addq.l #2,a2
- dbra d0,cn6b
-
- lea $3B9(a0),a1
- lea $43C(a0),a2
- lea pr_Buf1(pc),a3
- moveq #$7F,d0
- cn7a: moveq #0,d1
- move.b (a1)+,d1
- moveq #0,d2
- move.w (a3)+,d2
- tst.w d2
- beq.s cn7b
- lsl.l #8,d1
- lsl.l #2,d1
- move.l a2,a4
- add.l d1,a4
- lsl.l #4,d2
- add.l d2,a4
- move.b #$80,d7
- or.b d7,(a4)
- or.b d7,4(a4)
- or.b d7,8(a4)
- or.b d7,12(a4)
- cn7b: dbra d0,cn7a
-
- bsr.w cn8
-
- lea (a0),a6
- move.l #'SNT!',(a6)+
- addq.l #4,a6
-
- lea $14(a0),a1
- moveq #$16,d1
- moveq #$1E,d0
- cnn9b: add.l d1,a1
- move.l (a1)+,(a6)+
- move.l (a1)+,(a6)+
- dbra d0,cnn9b
- move.w (a1)+,(a6)+
- lea pr_dabuf3(pc),a1
- moveq #$1F,d0
- cnn9c: move.l (a1)+,(a6)+
- dbra d0,cnn9c
-
- lea pr_Buf1(pc),a1
- lea pr_ln2(pc),a2
- lea $3B9(a0),a3
- moveq #$7F,d0
- cnn10b: clr.w (a6)+
- moveq #0,d1
- move.b (a3)+,d1
- move.w (a1)+,d2
- tst.w d2
- beq.s cnn10e
- add.w d1,d1
- move.w 0(a2,d1.w),d1
- lea $43C(a0),a4
- add.l d1,a4
- move.l a4,a5
- lsl.w #2,d2
- subq.w #1,d2
- cnn10c: tst.b (a4)+
- bmi.s cnn10d
- addq.l #2,a4
- cnn10d: dbra d2,cnn10c
- sub.l a5,a4
- move.w a4,-2(a6)
- cnn10e: dbra d0,cnn10b
-
- lea (a6),a2
- moveq #$3F,d0
- cnn11c: clr.w (a6)+
- dbra d0,cnn11c
-
- lea pr_dabuf(pc),a4
- lea pr_ln2(pc),a3
- moveq #0,d3
- moveq #$40,d0
- cnn12b: tst.b (a4)
- beq.s cnn12f
- move.w d3,d2
- add.w d2,d2
- sub.l a1,a1
- move.w 0(a3,d2.w),a1
- add.l a0,a1
- lea $43C(a1),a1
- move.l a6,a5
- sub.l a0,a5
- lea -$302(a5),a5
- move.w a5,(a2)+
- move.w #$FF,d1
- cnn12c: btst #7,(a1)
- beq.s cnn12d
- move.b (a1)+,(a6)+
- bra.s cnn12e
-
- cnn12d: move.b (a1)+,(a6)+
- move.b (a1)+,(a6)+
- move.b (a1)+,(a6)+
- cnn12e: dbra d1,cnn12c
- cnn12f: addq.l #1,d3
- addq.l #1,a4
- dbra d0,cnn12b
-
- move.l a6,a1
- suba.l a0,a1
- move.l a1,4(a0)
- move.l pr_pr_r3(pc),d0
- lea $43C(a0),a1
- moveq #0,d1
- move.w pr_Wd2(pc),d1
- addq.w #1,d1
- lsl.l #8,d1
- lsl.l #2,d1
- add.l d1,a1
- cnn13b: move.l (a1)+,(a6)+
- subq.l #4,d0
- bgt.s cnn13b
-
- move.l a6,a4
- sub.l a0,a4
- move.l a4,d0
- not_pr rts
-
- cn8: lea $43C(a0),a1
- lea (a1),a2
- lea pr_ln1(pc),a6
- lea pr_ln2(pc),a3
- moveq #0,d0
- move.w pr_Wd2(pc),d0
- cn8b: move.l a2,a4
- sub.l a0,a4
- lea -$43C(a4),a4
- move.w a4,(a3)+
- moveq #$3F,d6
- moveq #-1,d1
- move.l d1,(a6)
- move.l d1,4(a6)
- move.l d1,8(a6)
- move.l d1,12(a6)
- cn8c: moveq #3,d5
- cn8d: tst.l (a1)
- bmi.s cn8f
- bne.s cn8e
- clr.l (a1)+
- move.b #$80,(a2)+
- dbra d5,cn8d
- dbra d6,cn8c
- dbra d0,cn8b
- rts
- cn8e: move.l d5,d1
- lsl.l #2,d1
- move.l 0(a6,d1.w),d2
- cmp.l (a1),d2
- bne.s cn8f
- clr.l (a1)+
- move.b #$C0,(a2)+
- dbra d5,cn8d
- dbra d6,cn8c
- dbra d0,cn8b
- rts
-
- cn8f: move.l (a1),0(a6,d1.w)
- move.w (a1),d1
- and.w #$FFF,d1
- move.b (a1),d2
- move.b 2(a1),d3
- lsr.b #4,d3
- and.b #$70,d2
- or.b d3,d2
- move.w 2(a1),d3
- and.w #$FFF,d3
- clr.l (a1)+
- moveq #0,d4
- tst.w d1
- beq.s cn8h
- lea pr_periods(pc),a4
- cn8g: addq.w #1,d4
- cmp.w (a4)+,d1
- bne.s cn8g
- cn8h: lsl.b #1,d4
- move.b d4,(a2)
- move.b d2,d1
- and.b #1,d1
- or.b d1,(a2)
- bclr #0,d2
- lsl.b #3,d2
- or.b d2,1(a2)
- move.w d3,d1
- lsr.w #8,d1
- or.b d1,1(a2)
- move.b d3,2(a2)
- addq.l #3,a2
- dbra d5,cn8d
- dbra d6,cn8c
- dbra d0,cn8b
- rts
-
- pr_ln1: ds.l 4
- pr_flag1: ds.b 138
- pr_dabuf3: ds.b 130
- pr_dabuf: ds.b 130
- pr_ln2: ds.b 128
- pr_Wd1: ds.w 1
- pr_Wd2: ds.w 1
- pr_Wd3: ds.w 1
- pr_Long1: ds.l 1
- pr_OldLength: ds.l 1
- pr_Module: ds.l 1
- pr_pr_r3: ds.l 1
- pr_Buf1: ds.l $40
-
- pr_periods:
-
- ; Tuning 0, Normal
- dc.w 856,808,762,720,678,640,604,570,538,508,480,453
- dc.w 428,404,381,360,339,320,302,285,269,254,240,226
- dc.w 214,202,190,180,170,160,151,143,135,127,120,113
- ; Tuning 1
- dc.w 850,802,757,715,674,637,601,567,535,505,477,450
- dc.w 425,401,379,357,337,318,300,284,268,253,239,225
- dc.w 213,201,189,179,169,159,150,142,134,126,119,113
- ; Tuning 2
- dc.w 844,796,752,709,670,632,597,563,532,502,474,447
- dc.w 422,398,376,355,335,316,298,282,266,251,237,224
- dc.w 211,199,188,177,167,158,149,141,133,125,118,112
- ; Tuning 3
- dc.w 838,791,746,704,665,628,592,559,528,498,470,444
- dc.w 419,395,373,352,332,314,296,280,264,249,235,222
- dc.w 209,198,187,176,166,157,148,140,132,125,118,111
- ; Tuning 4
- dc.w 832,785,741,699,660,623,588,555,524,495,467,441
- dc.w 416,392,370,350,330,312,294,278,262,247,233,220
- dc.w 208,196,185,175,165,156,147,139,131,124,117,110
- ; Tuning 5
- dc.w 826,779,736,694,655,619,584,551,520,491,463,437
- dc.w 413,390,368,347,328,309,292,276,260,245,232,219
- dc.w 206,195,184,174,164,155,146,138,130,123,116,109
- ; Tuning 6
- dc.w 820,774,730,689,651,614,580,547,516,487,460,434
- dc.w 410,387,365,345,325,307,290,274,258,244,230,217
- dc.w 205,193,183,172,163,154,145,137,129,122,115,109
-
- pr_data: incbin "work:asm-one/raw/mod.ttt"
- pr_dataend:
-